var obj = {
    hi: function(){
        console.log(this);
        return () =>{
            // 以方法调用的函数中 this 指向当前对象
            // 以函数调用 this 指向全局
            console.log(this+'-----');
        }
    },
    //普通函数有 this , 箭头函数没有 this
    sayHi: function() {
        return function(){
        console.log(this);
        return () =>{
            console.log(this+'-----');
        }
      }
    },
    say:()=>{
        console.log(this+'-----');
    }
}

let sayHi = obj.sayHi();  // 返回一个函数
// console.log( obj.sayHi());
// console.log(sayHi());  // 输出 this 因为是以函数方式调用 this指向全局  并返回一个函数
let fun1=sayHi();   // 输出 this（指向全局） 并返回一个函数
fun1();   // 箭头函数返回的this 全局

let fun2 = sayHi.bind(obj)();  // 将this 绑定到obj  this指向obj对象
fun2();  // 箭头函数返回的this obj
